//EJERCICIO 1
	int radio;
	cout << "Introduce el radio de la circunferencia: " << endl;
	cin >> radio;
	cout << "El area de la circunferencia es: " << 3.1415 * radio * radio << endl;

	//EJERCICIO 2
	double cantidad;
	cout << "Introduce el numero en cm: " << endl;
	cin >> cantidad;
	cout << "El numero pasado a metros es: " << cantidad / 100 << endl;

	//EJERCICIO 3
	double cateto1;
	cout << "Introduce el primer cateto: " << endl;
	cin >> cateto1;
	double cateto2;
	cout << "Introduce el segundo cateto: " << endl;
	cin >> cateto2;
	cout << "La hipotenusa es: " << sqrt(cateto1 * cateto1 + cateto2*cateto2) << endl;

	//EJERCICIO 4
	cout << "Introduce un numero: " << endl;
	int x;
	cin >> x;

	if (x % 2 == 0) {
		cout << "Es par";
	}else {
		cout << "Es impar";
	}

	//EJERCICIO 5
	cout << "Introduce una letra: " << endl;
	char c;
	cin >> c;
	if ((int)c >= (int)'a' && (int)c <= (int)'z') {
		cout << "Es minuscula";
	}else {
		cout << "Es mayuscula";
	}

	//EJERCICIO 6
	cout << "Jugador A: " << endl;
	int puntosA;
	cin >> puntosA;

	cout << "Jugador B: " << endl;
	int puntosB;
	cin >> puntosB;

	if (puntosA > 7  || puntosB > 7) {
		cout << "Puntuacion invalida" << endl;
	}else if ((puntosA < 5 && puntosB > 6) && (puntosB < 5 && puntosA > 6)) {
		cout << "Puntuacion invalida" << endl;
	}else if (puntosA == 6 && puntosB < 5) {
		cout << "Gana A" << endl;
	}else if (puntosB == 6 && puntosA < 5) {
		cout << "Gana B" << endl;
	}else if (puntosA == 7 && puntosB >= 5 && puntosB <= 6) {
		cout << "Gana A" << endl;
	}else if (puntosB == 7 && puntosA >= 5 && puntosA <= 6) {
		cout << "Gana B" << endl;
	}else if ((puntosA == puntosB && puntosA < 7) || (puntosA != puntosB && puntosA < 7)) {
		cout << "El set no ha acabado" << endl;
	}else {
		cout << "Puntuacin invalida" << endl;
	}

	//EJERCICIO 7
	for (int i = 0; i <= 10; i++){
		cout << "3 x " << i << " = " << (3 * i) << endl;
	}

	//EJERCICIO 8
	cout << "Introduce un numero: " << endl;
	int x;
	cin >> x;

	for (int i = 0; i <= 10; i++){
		cout << x << " elevado a " << i << " = " << pow(x, i) << endl;
	}

	//EJERCICIO 9
	cout << "Introduce un numero: " << endl;
	int x;
	cin >> x;
	bool esPrimo = true;
	int i = 1;

	while (i <= x && esPrimo) {
		if ((i != 1 && i != x) && (x % i == 0)) {
			esPrimo = false;
			cout << "El numero no es primo" << endl;
		}
		i++;
	}

	if (esPrimo) {
		cout << "es primo" << endl;
	}

	//EJERCICIO 10
	int contador = 0;

	for (int i = 0; i <= 50; i++) {
		if (i % 2 == 0) {
			cout << i << "es par" << endl;
			contador++;
		}
	}

	cout << "Hay " << contador << " numeros pares entre 0 y 50" << endl;

	//EJERCICIO 11
	for (int i = 0; i < 4; i++){
		for (int j = 0; j < 10; j++){
			if (i == 0 || i == 3) {
				cout << "*";
			}else {
				if (j == 0 || j == 9) {
					cout << "|";
				}else {
					cout << " ";
				}
			}
		}
		cout << "" << endl;
	}

	//EJERCICIO 12
	int sum = 0;
	for (int i = 0; i <= 100; i++) {
		sum += i;
	}

	cout << "La suma de los 100 primeros nmeros es: " << sum << endl;

	//EJERCICIO 13
	cout << "Escribe s para salir o c para continuar: " << endl;
	char c;
	cin >> c;

	while (c != 's') {
		cout << "Sigues en el bucle" << endl;
		cout << "Escribe s para salir o c para continuar: " << endl;
		cin >> c;
	}

	cout << "Has salido del bucle" << endl;

	//EJERCICIO 14
	cout << "Introduce una frase o palabra: " << endl;
	string c;
	getline(std::cin, c);
	cout << c.length();

	//EJERCICIO 15
	cout << "Introduce una palabra o frase: " << endl;
	string s;
	getline(std::cin, s);
	int contador = 0;

	for (int i = 0; i < s.length; i++) {
		if (s[i] != ' ') {
			contador++;
		}
	}

	cout << contador << endl;

	//EJERCICO 16
	cout << "Introduce una palabra o frase: " << endl;
	string s;
	getline(std::cin, s);
	int contador = 0;
	
	for (int i = 0; i < s.length; i++) {
		if (s[i] == 'a') {
			contador++;
		}
	}

	cout << contador << endl;

	//EJERCICIO 17
	cout << "Introduce hasta 10 numeros, pero si introduces un 0 no podras meter mas: " << endl;
	int n;
	cin >> n;
	int arr[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
	int i = 0;

	while (n != 0) {
		arr[i] = n;
		cout << "Introduce el siguiente: " << endl;
		cin >> n;
		i++;
	}

	int mayor = arr[0];
	for (int j = 0; j < 10; j++){
		if (arr[j] > mayor) {
			mayor = arr[j];
		}
	}

	cout << "El mayor es: " << mayor << endl;

	//EJERCICIO 18
	cout << "Introduce hasta 10 numeros, pero si introduces un 0 no podras meter mas: " << endl;
	int n;
	cin >> n;
	int arr[10] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
	int i = 0;

	while (n != 0) {
		arr[i] = n;
		cout << "Introduce el siguiente: " << endl;
		cin >> n;
		i++;
	}

	int sum = 0;
	for (int j = 0; j < 10; j++){
		sum += arr[j];
	}

	cout << "La suma es: " << sum << endl;

	//EJERCICIO 19
	string nombres[8];

	for (int i = 0; i < 8; i++) {
		cout << "Introduce el nombre del equipo numero " << (i + 1) << endl;
		getline(std::cin, nombres[i]);
	}

	int cont = 0;
	int ganadores1[4];
	int pos = 0;
	cout << "Primera ronda" << endl;;
	while (cont < 7) {
		cout << "1. " << nombres[cont] << " - 2. " << nombres[cont + 1] << ": " << endl;
		int opcion;
		cin >> opcion;
		if (opcion == 1) ganadores1[pos] = cont;
		else ganadores1[pos] = cont + 1;

		cont += 2;
		pos++;
	}

	cont = 0;
	pos = 0;
	int ganadores2[2];
	cout << "Segunda ronda" << endl;
	while (cont < 3) {
		cout << "1. " << nombres[ganadores1[cont]] << " - 2. " << nombres[ganadores1[cont + 1]] << ": " << endl;
		int opcion;
		cin >> opcion;
		if (opcion == 1) ganadores2[pos] = ganadores1[cont];
		else ganadores2[pos] = ganadores1[cont + 1];

		cont += 2;
		pos++;
	}

	cout << "Tercera ronda" << endl;
	cout << "1. " << nombres[ganadores2[0]] << " - 2. " << nombres[ganadores2[1]] << ": " << endl;
	int opcion;
	cin >> opcion;
	int ganador;
	if (opcion == 1)	ganador = ganadores2[0];
	else ganador = ganadores2[1];

	cout << "Finalmente el ganador es: " << "!" << nombres[ganador] << "!" << endl;
	
	//EJERCICIO 20
	void tablaDel(int n) {
		for (int i = 0; i <= 10; i++){
			cout << n << " x " << i << " = " << (n * i) << endl;
		}
	}

	//EJERCICIO 21
	bool esPos(int n) {
		if (n >= 0) {
			return true;
		}else {
			return false;
		}
	}

	void posOneg(int n) {
		if (esPos(n)) {
			cout << "Es positivo";
		}else {
			cout << "Es negativo";
		}
	}


	//EJERCICIO 22
	string s;
	getline(std::cin, s);

	while (s != "salir") {
		repetidor(s);
		getline(std::cin, s);
	}

	//EJERCICIO 22
	void repetidor(string s) {
		cout << s << " (IA)" << endl;
	}
	
	//EJERCICIO 23
	int ES0[4][3];

	int opcion = 0;

	while (opcion != 4) {
		cout << "(1) Anadir alumno" << endl;
		cout << "(2) Eliminar alumno" << endl;
		cout << "(3) Alumnos en clase" << endl;
		cout << "(4) Salir" << endl;

		cin >> opcion;
		switch (opcion) {
		case 1: cout << "Primero elige el curso: " << endl;
			int anadirCurso;
			cin >> anadirCurso;
			cout << "Ahora la clase (A = 1, B = 2, C = 3)" << endl;
			int anadirClase;
			cin >> anadirClase;
			ESO[anadirCurso][anadirClase]++;
			break;
		case 2: cout << "Primero elige el curso: " << endl;
			int eliminarCurso;
			cout << "Ahora la clase (A = 1, B = 2, C = 3)" << endl;
			int eliminarClase;
			cin >> eliminarClase;
			if (ESO[eliminarCurso][eliminarClase] > 0) {
				ESO[eliminarCurso][eliminarClase]--;
			}
			break;
		case 3: cout << "Primero elige el curso: " << endl;
			int infoCurso;
			cout << "Ahora la clase (A = 1, B = 2, C = 3)" << endl;
			int infoClase;
			cout << ESO[infoCurso][infoClase] << " alumnos" << endl;
			break;
		case 4: cout << "Saliendo del sistema" << endl;
			break;
		default: cout << "Opcion no valida" << endl;
		}
	}

	//EJERCICIO 24
	//Fuera del main hasta Biblioteca bib1, bib2, bib3;
	void anadirLibro(int, string, string, int);
	void listaLibrosBiblio(int );
	void modificarLibro(int , string , string);
	void librosMasCienPags(int );
	void listaLibrosPrest(int );
	void prestarLibro(int , string, int, int, int);

	struct Director {
		string nombre;
		string apellido;
		string dni;
	};

	struct Fecha {
		int dia = 0;
		int mes = 0;
		int anio = 0;
	};

	struct Libro {
		string nombre = "";
		string nombreAutor = "";
		int paginas = 0;
		Fecha fechaPrestado;
	};

	struct Biblioteca {
		string nombre = "";
		string direccion = "";
		int numDireccion = 0;
		Director director;
		Libro libros[100] = {};
		int contLibros = 0;
	};

	Biblioteca bib1, bib2, bib3;

	//A partir de aqu dentro del main
	int opcion = 0;

	while (opcion != 7) {
		cout << "1) Anadir libro a biblioteca" << endl;
		cout << "2) Lista de nombres de libros de una biblioteca" << endl;
		cout << "3) Modificar nombre de un libro" << endl;
		cout << "4) Mostrar nombres de libros de mas de 100 paginas" << endl;
		cout << "5) Mostrar libros en prestamo" << endl;
		cout << "6) Prestar un libro" << endl;
		cout << "7) Salir" << endl;

		cin >> opcion;
		switch (opcion) {
		case 1 : {cout << "Numero de la biblioteca: " << endl;
				int numBibAnadir;
				cin >> numBibAnadir;
				cin.ignore();
				cout << "Nombre del libro" << endl;
				string nombLibAnadir;
				getline(std::cin, nombLibAnadir);
				cout << "Nombre del autor" << endl;
				string nombAutor;
				getline(std::cin, nombAutor);
				cout << "Numero de paginas" << endl;
				int numPags;
				cin >> numPags;
				cin.ignore();
				anadirLibro(numBibAnadir, nombLibAnadir, nombAutor, numPags);
				 }
			break;
		case 2 : {cout << "Numero de la biblioteca: " << endl;
				 int numBibLista;
				 cin >> numBibLista;
				 cin.ignore();
				 listaLibrosBiblio(numBibLista);
				 }
			break;
		case 3 : {cout << "Numero de la biblioteca: " << endl;
				int numBibMod;
				cin >> numBibMod;
				cin.ignore();
				cout << "Nombre del libro: " << endl;
				string nombLibMod;
				cin >> nombLibMod;
				getline(std::cin, nombLibMod);
				cout << "Nuevo nombre del libro: " << endl;
				string nuevoNomLibMod;
				getline(std::cin, nuevoNomLibMod);
				modificarLibro(numBibMod, nombLibMod, nuevoNomLibMod);
				 }
			break;
		case 4 : {cout << "Numero de la biblioteca: " << endl;
				 int numBibCienPags;
				 cin >> numBibCienPags;
				 cin.ignore();
				 librosMasCienPags(numBibCienPags);
				 }
			break;
		case 5 : {cout << "Numero de la biblioteca: " << endl;
				 int numBibPrest;
				 cin >> numBibPrest;
				 cin.ignore();
				 listaLibrosPrest(numBibPrest);
				}
			break;
		case 6 : {cout << "Numero de la biblioteca: " << endl;
				 int numBibHacerPrest;
				 cin >> numBibHacerPrest;
				 cin.ignore();
				 cout << "Nombre del libro: " << endl;
				 string nomLibHacerPrest;
				 getline(std::cin, nomLibHacerPrest);
				 cout << "Dia: " << endl;
				 int dia;
				 cin >> dia;
				 cin.ignore();
				 cout << "Mes: " << endl;
				 int mes;
				 cin >> mes;
				 cin.ignore();
				 cout << "Anio: " << endl;
				 int anio;
				 cin >> anio;
				 cin.ignore();
				 prestarLibro(numBibHacerPrest, nomLibHacerPrest, dia, mes, anio);
				}
			break;
		case 7 : cout << "Saliendo..." << endl;
			break;
		default : cout << "Opcion no valida..." << endl;
		}
	}
	
	//Esto tambien va fuera del main hasta el final
	void anadirLibro(int biblio, string nombLibro, string nombAutor, int paginas) {
		if (biblio == 0) {
			Libro l;
			l.nombre = nombLibro;
			l.nombreAutor = nombAutor;
			l.paginas = paginas;
			bib1.libros[bib1.contLibros] = l;
			bib1.contLibros++;
		}else if (biblio == 1) {
			Libro l;
			l.nombre = nombLibro;
			l.nombreAutor = nombAutor;
			l.paginas = paginas;
			bib2.libros[bib2.contLibros] = l;
			bib2.contLibros++;
		}else if () {
			Libro l;
			l.nombre = nombLibro;
			l.nombreAutor = nombAutor;
			l.paginas = paginas;
			bib3.libros[bib3.contLibros] = l;
			bib3.contLibros++;
		}else {
			cout << "Numero de biblioteca incorrecto..." << endl;
		}
	}

	void listaLibrosBiblio(int biblio) {
		if (biblio == 0) {
			for (int i = 0; i < bib1.contLibros; i++) {
				cout << "Nombre: " << bib1.libros[i].nombre << ", Autor: " << bib1.libros[i].nombreAutor
					<< ", Numero paginas: " << bib1.libros[i].paginas << endl;
			}
		}else if (biblio == 1) {
			for (int i = 0; i < bib2.contLibros; i++) {
				cout << "Nombre: " << bib2.libros[i].nombre << ", Autor: " << bib2.libros[i].nombreAutor
					<< ", Numero paginas: " << bib2.libros[i].paginas << endl;
			}
		}else if (biblio == 2) {
			for (int i = 0; i < bib3.contLibros; i++) {
				cout << "Nombre: " << bib3.libros[i].nombre << ", Autor: " << bib3.libros[i].nombreAutor
					<< ", Numero paginas: " << bib3.libros[i].paginas << endl;
			}
		}else {
			cout << "Numero de biblioteca incorrecto..." << endl;
		}
	}

	void modificarLibro(int biblio, string nomb, string nuevoNomb) {
		if (biblio == 0) {
			for (int i = 0; i < bib1.contLibros; i++) {
				if (bib1.libros[i].nombre == nomb) {
					bib1.libros[i].nombre = nuevoNomb;
					break;
				}
			}
		}else if (biblio == 1) {
			for (int i = 0; i < bib2.contLibros; i++) {
				if (bib2.libros[i].nombre == nomb) {
					bib2.libros[i].nombre = nuevoNomb;
					break;
				}
			}
		}else if (biblio == 2) {
			for (int i = 0; i < bib3.contLibros; i++) {
				if (bib3.libros[i].nombre == nomb) {
					bib3.libros[i].nombre = nuevoNomb;
					break;
				}
			}
		}else{
			cout << "Numero de biblioteca incorrecto..." << endl;
		}
	}

	void librosMasCienPags(int biblio) {
		if (biblio == 0) {
			for (int i = 0; i < bib1.contLibros; i++) {
				if (bib1.libros[i].paginas > 100) {
					cout << bib1.libros[i].nombre << " tiene mas de 100 paginas" << endl;
				}
			}
		}
		else if (biblio == 1) {
			for (int i = 0; i < bib2.contLibros; i++) {
				if (bib2.libros[i].paginas > 100) {
					cout << bib2.libros[i].nombre << " tiene mas de 100 paginas" << endl;
				}
			}
		}
		else if (biblio == 2) {
			for (int i = 0; i < bib2.contLibros; i++) {
				if (bib2.libros[i].paginas > 100) {
					cout << bib2.libros[i].nombre << " tiene mas de 100 paginas" << endl;
				}
			}
		}
		else {
			cout << "Numero de biblioteca incorrecto..." << endl;
		}
	}

	void listaLibrosPrest(int biblio) {
		if (biblio == 0) {
			for (int i = 0; i < bib1.contLibros; i++) {
				if (bib1.libros[i].fechaPrestado.dia != 0 && bib1.libros[i].fechaPrestado.mes != 0 
					&& bib1.libros[i].fechaPrestado.anio != 0) {
					cout << bib1.libros[i].nombre << " esta en prestamo" << endl;
				}
			}
		}
		else if (biblio == 1) {
			for (int i = 0; i < bib2.contLibros; i++) {
				if (bib2.libros[i].fechaPrestado.dia != 0 && bib2.libros[i].fechaPrestado.mes != 0
					&& bib2.libros[i].fechaPrestado.anio != 0) {
					cout << bib2.libros[i].nombre << " esta en prestamo" << endl;
				}
			}
		}
		else if (biblio == 2) {
			for (int i = 0; i < bib2.contLibros; i++) {
				if (bib3.libros[i].fechaPrestado.dia != 0 && bib3.libros[i].fechaPrestado.mes != 0
					&& bib3.libros[i].fechaPrestado.anio != 0) {
					cout << bib3.libros[i].nombre << " esta en prestamo" << endl;
				}
			}
		}
		else {
			cout << "Numero de biblioteca incorrecto..." << endl;
		}
	}

	void prestarLibro(int biblio, string nomb, int fechDia, int fechMes, int fechAnio) {
		if (biblio == 0) {
			for (int i = 0; i < bib1.contLibros; i++) {
				if (bib1.libros[i].nombre == nomb) {
					bib1.libros[i].fechaPrestado.dia = fechDia;
					bib1.libros[i].fechaPrestado.mes = fechMes;
					bib1.libros[i].fechaPrestado.anio = fechAnio;
					break;
				}
			}
		}
		else if (biblio == 1) {
			for (int i = 0; i < bib2.contLibros; i++) {
				if (bib2.libros[i].nombre == nomb) {
					bib2.libros[i].fechaPrestado.dia = fechDia;
					bib2.libros[i].fechaPrestado.mes = fechMes;
					bib2.libros[i].fechaPrestado.anio = fechAnio;
					break;
				}
			}
		}
		else if (biblio == 2) {
			for (int i = 0; i < bib2.contLibros; i++) {
				if (bib3.libros[i].nombre == nomb) {
					bib3.libros[i].fechaPrestado.dia = fechDia;
					bib3.libros[i].fechaPrestado.mes = fechMes;
					bib3.libros[i].fechaPrestado.anio = fechAnio;
					break;
				}
			}
		}
		else {
			cout << "Numero de biblioteca incorrecto..." << endl;
		}
	}